package com.consumer.entity;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;

import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;

/**
 * 当前版本需求(DevopsDemand)表实体类
 *
 * @author makejava
 * @since 2024-04-28 21:51:28
 */

@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class DevopsDemand extends Model<DevopsDemand> {

    /**
     * 需求ID
     */
    @TableId(value = "id", type = IdType.ASSIGN_UUID)
    private String id;

    @TableField(value = "parent_id")
    private String parentId;
    /**
     * 需求全路径
     */
    @TableField(value = "full_id")
    private String fullId;
    /**
     * 任务组ID
     */
    @TableField(value = "task_group_id")
    private String taskGroupId;
    /**
     * 所属计划明细
     */
    @TableField(value = "plan_detail_id")
    private String planDetailId;
    /**
     * 所属计划
     */
    @TableField(value = "plan_id")
    private String planId;
    /**
     * 所属系统
     */
    @TableField(value = "project_id")
    private String projectId;
    /**
     * 需求编码
     */
    @TableField(value = "code")
    private String code;
    /**
     * 需求名称
     */
    @TableField(value = "name")
    private String name;
    /**
     * 需求序号
     */
    @TableField(value = "num")
    private Long num;
    /**
     * 00-待评审
     * 01-已评审
     * 02-进行中
     * 03-已完成
     * 04-已提测  提测流程->提测清单
     * 4.1 测试中
     * 4.2 测试通过
     * 4.3 测试不通过
     * 05-测试中(测试反写)
     * 06-测试通过(测试反写)
     * 07-关闭
     * 08-作废
     * 09-挂起
     * 10-激活
     */
    @TableField(value = "status")
    private String status;
    /**
     * 需求描述
     */
    @TableField(value = "remark")
    private String remark;
    /**
     * 需求来源(字典)
     */
    @TableField(value = "demand_source")
    private String demandSource;
    /**
     * 需求类型(字典)
     */
    @TableField(value = "demand_type")
    private String demandType;
    /**
     * 需求提出人
     */
    @TableField(value = "introducer")
    private String introducer;
    /**
     * 需求提出人名称
     */
    @TableField(value = "introducer_name")
    private String introducerName;
    /**
     * 需求提出人账号
     */
    @TableField(value = "introducer_account")
    private String introducerAccount;
    /**
     * 需求负责人
     */
    @TableField(value = "manager")
    private String manager;
    /**
     * 需求提出人名称
     */
    @TableField(value = "manager_name")
    private String managerName;
    /**
     * 需求负责人账号
     */
    @TableField(value = "manager_account")
    private String managerAccount;
    /**
     * 需求测试人
     */
    @TableField(value = "tester")
    private String tester;
    /**
     * 需求测试人名称
     */
    @TableField(value = "tester_name")
    private String testerName;
    /**
     * 需求测试人名称
     */
    @TableField(value = "tester_account")
    private String testerAccount;
    /**
     * 需求测提交时间
     */
    @TableField(value = "commit_time")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private LocalDateTime commitTime;
    /**
     * 预计开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "predict_begin_time")
    private LocalDateTime predictBeginTime;
    /**
     * 预计结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "predict_end_time")
    private LocalDateTime predictEndTime;
    /**
     * 实际开始时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "practical_begin_time")
    private LocalDateTime practicalBeginTime;
    /**
     * 实际结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "practical_end_time")
    private LocalDateTime practicalEndTime;
    /**
     * 预计工时
     */
    @TableField(value = "hours_of_work")
    private BigDecimal hoursOfWork;
    /**
     * 实际工时
     */
    @TableField(value = "hours_of_work_truth")
    private BigDecimal hoursOfWorkTruth;
    /**
     * 工时单位
     * 1 天，
     * 2 时
     */
    @TableField(value = "hours_of_work_unit")
    private String hoursOfWorkUnit;
    /**
     * 优先顺序 由低到高排序
     */
    @TableField(value = "sort")
    private int sort;
    /**
     * 需求优先级(字典)
     */
    @TableField(value = "level")
    private String level;
    /**
     * 评审原因
     */
    @TableField(value = "review_describe")
    private String reviewDescribe;
    /**
     * 作废原因
     */
    @TableField(value = "cancellation_describe")
    private String cancellationDescribe;
    /**
     * 挂起原因
     */
    @TableField(value = "suspend_describe")
    private String suspendDescribe;
    /**
     * 激活原因
     */
    @TableField(value = "activate_describe")
    private String activateDescribe;
    /**
     * 0-否
     * 1-是
     */
    @TableField(value = "is_leaf")
    private String isLeaf;
    /**
     * 是否有效 Y 有效，N 无效
     */
    @TableField(value = "is_valid", fill = FieldFill.INSERT)
    private String isValid;
    @TableField(value = "version", fill = FieldFill.INSERT)
    private Long version;
    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 创建人
     */
    @TableField(value = "create_user", fill = FieldFill.INSERT)
    private String createUser;
    /**
     * 创建人姓名
     */
    @TableField(value = "create_user_name", fill = FieldFill.INSERT)
    private String createUserName;
    /**
     * 修改时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    /**
     * 修改人
     */
    @TableField(value = "update_user", fill = FieldFill.INSERT_UPDATE)
    private String updateUser;
    /**
     * 修改人姓名
     */
    @TableField(value = "update_user_name", fill = FieldFill.INSERT_UPDATE)
    private String updateUserName;
    /**
     * 租户ID
     */
    @TableField(value = "lessee_id", fill = FieldFill.INSERT)
    private String lesseeId;

}

